/* 
图书管理的路由器
*/
const express = require('express')
const BookModel = require('../models/BookModel')

const router = express.Router()

// 图书列表的路由
router.get('/list', (req, res) => {
  // 查找出所有的book列表
  BookModel.find((error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.render('book/error', {errorMsg: '获取图书列表失败'})
    } else { // 如果成功了, 返回图书列表页面
      res.render('book/list', {books: data})
    }
    
  })
})

// 进入修改界面的路由
router.get('/toUpdate/:id', (req, res) => {
  // 得到id参数
  const {id} = req.params
  // 根据id查询得到对应的book
  BookModel.findById(id, (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.render('book/error', {errorMsg: '获取图书失败'})
    } else { // 返回更新界面
      res.render('book/addOrUpdate', {book: data})
    }
  })
})

// 进入添加界面的路由
router.get('/toAdd', (req, res) => {
  // 跳转addOrUpdate页面
  const book = {
    name: '',
    author: '',
    price: 0
  }
  res.render('book/addOrUpdate', {book})
})


/* 
添加的路由
- 读取请求参数: book对象(没有_id)
- 添加到数据库
- 重定向: /book/list
*/
router.post('/add', (req, res) => {
  // 读取请求参数: book对象(没有_id)
  const book = req.body
  // 添加到数据库
  BookModel.create(book, (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.render('book/error', {errorMsg: '添加图书失败'})
    } else { // 重定向: /book/list
      res.redirect('/book/list')
    }
  })
})

/* 
修改的路由
- 读取请求参数: book对象(包含_id)
- 修改数据库
- 重定向: /book/list
*/
router.post('/update', (req, res) => {
  // 读取请求参数: book对象(包含_id)
  const book = req.body
  // 添加到数据库
  BookModel.updateOne({_id: book._id}, book,  (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.render('book/error', {errorMsg: '修改图书失败'})
    } else { // 重定向: /book/list
      res.redirect('/book/list')
    }
  })
})

/* 
删除的路由
- 读取请求参数: id
- 删除对应的文档
- 重定向: /book/list
*/
router.get('/remove/:id', (req, res) => {
  // - 读取请求参数: id
  const {id} = req.params
  // 删除对应的文档
  BookModel.deleteOne({_id: id}, (error, data) => {
    // 如果失败了, 返回错误页面
    if (error) {
      res.render('book/error', {errorMsg: '删除图书失败'})
    } else { // 重定向: /book/list
      res.redirect('/book/list')
    }
  })
})

module.exports = router